import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'dart:typed_data';

/// 头像帮助工具类
/// 用于处理用户头像相关的逻辑
class AvatarHelper {
  /// 获取用户头像的ImageProvider
  /// 如果用户头像为空或无效，将返回默认头像
  static ImageProvider getAvatarProvider(String? avatarUrl) {
    if (avatarUrl != null && avatarUrl.isNotEmpty) {
      return NetworkImage(avatarUrl);
    } else {
      // 使用本地默认头像
      try {
        return const AssetImage('assets/images/default_avatar.png');
      } catch (e) {
        // 如果PNG不存在，返回一个内存中的空图像，避免异常
        return MemoryImage(Uint8List.fromList(kTransparentImage));
      }
    }
  }
  
  /// 创建头像组件
  /// [radius] 头像半径
  /// [avatarUrl] 头像URL
  static Widget createAvatar({
    required double radius, 
    String? avatarUrl,
    Color backgroundColor = Colors.blue,
  }) {
    // 创建带透明度的颜色
    final Color bgColorWithAlpha = backgroundColor.withAlpha(51);
    
    if (avatarUrl == null || avatarUrl.isEmpty) {
      // 尝试使用SVG作为默认头像
      try {
        return CircleAvatar(
          radius: radius,
          backgroundColor: bgColorWithAlpha,
          child: ClipOval(
            child: SvgPicture.asset(
              'assets/images/default_avatar.svg',
              width: radius * 2,
              height: radius * 2,
              fit: BoxFit.cover,
            ),
          ),
        );
      } catch (e) {
        // 如果SVG加载失败，使用图标替代
        return CircleAvatar(
          radius: radius,
          backgroundColor: bgColorWithAlpha,
          child: Icon(
            Icons.person,
            size: radius * 1.2,
            color: backgroundColor,
          ),
        );
      }
    } else {
      // 有头像URL时使用网络图片
      return CircleAvatar(
        radius: radius,
        backgroundImage: NetworkImage(avatarUrl),
        backgroundColor: bgColorWithAlpha,
      );
    }
  }
}

// 透明图像的字节数据
const kTransparentImage = <int>[
  0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x49,
  0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x08, 0x06,
  0x00, 0x00, 0x00, 0x1F, 0x15, 0xC4, 0x89, 0x00, 0x00, 0x00, 0x0A, 0x49, 0x44,
  0x41, 0x54, 0x78, 0x9C, 0x63, 0x00, 0x01, 0x00, 0x00, 0x05, 0x00, 0x01, 0x0D,
  0x0A, 0x2D, 0xB4, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42,
  0x60, 0x82
]; 